#pragma once
#include <atomic>
#include <string>
#include <thread>
#include <iostream>
#include <vector>
#include <mutex>
#include <queue>
#include <opencv2/opencv.hpp>
#include "base_util/utils.h"
#include "stream/total_struct.h"

namespace stream {

class BaseOsd
{
public:
  BaseOsd(StreamOsdBaseInfo* osd_info, LogInfo* log_info):
  osd_ifo(osd_info), log_ifo(log_info) {}
  virtual ~BaseOsd() {}

public:
  virtual int init_params() = 0;
  virtual int draw_osd(stream::ImageBlob& buffer, std::vector<OSDDrawInfo>& osdd_ifos) = 0;

public:
  LogInfo* log_ifo;
  StreamOsdBaseInfo* osd_ifo;
  std::mutex mtx;
  


};

}